Ethernet controllers, in particular stand alone Ethernet Controllers, are designed to serve as an Ethernet network interface for any type of microprocessor or microcontroller. Such a controller can have a fairly large memory and may include a dedicated interface such as a serial peripheral interface (SPI) bus. In some embodiments, such an Ethernet controller may also be integrated in a microcontroller using the SPI bus or any other capable interface connection. The Ethernet controller handles all communication protocols and comprises a large buffer for intermediate storage of incoming and outgoing messages. A microcontroller or microprocessor may then communicate and control the Ethernet controller via the interface. The stand alone or an integrated Ethernet controller handles coordination of incoming and outgoing data packets as well as packet filtering. It may further comprise an internal direct memory access (DMA) module for fast data throughput and hardware assisted checksum calculation. The communication of an Ethernet controller with a microcontroller or microprocessor can be established interrupt or polling driven.
However, conventional stand alone Ethernet controllers may not have any automatic flow control mechanism. Hence, data packets are written to the buffer as they are received. If a buffer is full, the received packets need to be dropped and will get lost. The external microcontroller or processor has to prevent any overflow of the buffer in case the controller cannot retrieve received data packets as fast as they are written to the buffer. To this end, relatively complex software is necessary to control the data flow within the Ethernet controller by an external processor.